08. For 循环
for 循环
使用嵌套 for 循环 (即在 for 循环内部使用 for 循环 ) 没什么问题。有时候,进行 C++ 向量操作时,我们需要这么写
但是,不需要的时候,不要这么用!Andy 的代码中,有几个地方使用的嵌套 for 循环是不必要的。
如果你正在遍历或初始化一个 m 乘以 n 的矩阵,你可能忍不住使用嵌套 for 循环,就像这样:
for (unsigned int i = 0; i < matrix.size(); i++) {
for (unsigned int j = 0; j < matrix[0].size(); j++) {
do something...
}
}
遍历整个矩阵需要 m 乘以 n 次运算。但是,如果你的目标不同,你也可以尝试以下操作:
for (unsigned int i = 0; i < matrix.size(); i++) {
do something
}
for (unsigned int j = 0; j < matrix[0].size(); j++) {
do something
}
这段代码只需要 m+n 次运算,不需要 m 乘以 n 次运算。记住,CPU 要运算的指令数越少,代码执行速度越快!
本课下一部分的 for 循环练习中,你会看到一个具体的例子。
练习
下面的练习是关于 for 循环优化。这段代码使用 for 循环内部的另一个 for 循环 初始化了一个二维向量,涉及到了 m 乘以 n 次运算。想想如何使用 m+n 次操作初始化同样的二维向量(提示:记住,二维向量的每个点的值都是一样的)。